package core.models.domainModel;

import java.util.ArrayList;

public class Vlucht {
	
	private int _vluchtId;
	private Vliegtuig _vliegtuig;
	private Luchthaven _vertrekPlaats; 
	private Luchthaven _aankomstPlaats;
	private String _vluchtNr;
	private String _vertrekTijdStip;
	private String _aankomstTijdStip;
	private double _prijsEcon;
	private double _prijsBusiness;
	private int _gate;
	private String _status;
	
	
	//TODO: Zet onderstaande lijsten om naar lijsten van de juiste objecten (passagiers, personeel, Zitplaatsen)Wanneer de Klasses Klaar zijn
	private ArrayList<String> _bemanningsLijst;
	private ArrayList<String> _passagiersLijst;
	private ArrayList<String> _zetels;
	
	private int _vrijeZitplaatsen; //wordt opgevuld door Yves in bookingDAO
	
	public Vlucht()
	{
		this._vluchtId = 0;
		this._vliegtuig = null;
		this._vertrekPlaats = null;
		this._aankomstPlaats = null;
		this._vluchtNr = "";
		this._vertrekTijdStip = "";
		this._aankomstTijdStip = "";
		this._prijsEcon = 0;
		this._prijsBusiness = 0;
		this._gate = 0;
		this._status = "";
		this._bemanningsLijst = null;
		this._passagiersLijst = null;
		this._zetels = null;
	}
	
	public Vlucht(int vluchtId, 
			Vliegtuig vliegtuig, 
			Luchthaven aankomstPlaats, 
			String aankomstTijdStip, 
			Luchthaven vertrekPlaats, 
			String vertrekTijdStip, 
			double prijsBusiness, 
			double prijsEcon,
			String status, 
			String vluchtNr, 
			ArrayList<String> bemanningsLijst, 
			ArrayList<String> passagiersLijst, 
			ArrayList<String> zetels) 
	{
		this._vluchtId = vluchtId;
		this._vliegtuig = vliegtuig;
		this._aankomstPlaats = aankomstPlaats;
		this._aankomstTijdStip = aankomstTijdStip;
		this._vertrekPlaats = vertrekPlaats;
		this._vertrekTijdStip = vertrekTijdStip;
		this._prijsBusiness = prijsBusiness;
		this._prijsEcon = prijsEcon;
		this._status = status;
		this._vluchtNr = vluchtNr;
		this._bemanningsLijst = bemanningsLijst;
		this._passagiersLijst = passagiersLijst;
		this._zetels = zetels;
	}

	
	// Bertels Nick c1019387
	public Vlucht(int vluchtId, Vliegtuig _vliegtuig, Luchthaven _vertrekPlaats,
			Luchthaven _aankomstPlaats, String _vluchtNr,
			String _vertrekTijdStip, String _aankomstTijdStip,
			double _prijsEcon, double _prijsBusiness, int _gate, String _status) {

		this._vluchtId = vluchtId;
		this._vliegtuig = _vliegtuig;
		this._vertrekPlaats = _vertrekPlaats;
		this._aankomstPlaats = _aankomstPlaats;
		this._vluchtNr = _vluchtNr;
		this._vertrekTijdStip = _vertrekTijdStip;
		this._aankomstTijdStip = _aankomstTijdStip;
		this._prijsEcon = _prijsEcon;
		this._prijsBusiness = _prijsBusiness;
		this._gate = _gate;
		this._status = _status;
	}

	public void set_vluchtId(int _vluchtId) {
		this._vluchtId = _vluchtId;
	}

	public int getVluchtId() {
		return _vluchtId;
	}

	public Vliegtuig getVliegtuig() {
		return _vliegtuig;
	}
	public void setVliegtuig(Vliegtuig value) {
		this._vliegtuig = value;
	}

	public Luchthaven getAankomstPlaats() {
		return _aankomstPlaats;
	}
	public void setAankomstPlaats(Luchthaven value) {
		this._aankomstPlaats = value;
	}

	public String getAankomstTijdStip() {
		return _aankomstTijdStip;
	}
	public void setAankomstTijdStip(String value) {
		this._aankomstTijdStip = value;
	}

	public Luchthaven getVertrekPlaats() {
		return _vertrekPlaats;
	}
	public void setVertrekPlaats(Luchthaven value) {
		this._vertrekPlaats = value;
	}

	public String getVertrekTijdStip() {
		return _vertrekTijdStip;
	}
	public void setVertrekTijdStip(String value) {
		this._vertrekTijdStip = value;
	}

	public double getPrijsBusiness() {
		return _prijsBusiness;
	}
	public void setPrijsBusiness(double value) {
		this._prijsBusiness = value;
	}

	public double getPrijsEcon() {
		return _prijsEcon;
	}
	public void setPrijsEcon(double value) {
		this._prijsEcon = value;
	}
	
	public String get_status() {
		return _status;
	}

	public void set_status(String _status) {
		this._status = _status;
	}

	public String getVluchtNr() {
		return _vluchtNr;
	}
	public void setVluchtNr(String value) {
		this._vluchtNr = value;
	}

	public ArrayList<String> getBemanningsLijst() {
		return _bemanningsLijst;
	}
	public void setBemanningsLijst(ArrayList<String> value) {
		this._bemanningsLijst = value;
	}

	public ArrayList<String> getPassagiersLijst() {
		return _passagiersLijst;
	}
	public void setPassagiersLijst(ArrayList<String> value) {
		this._passagiersLijst = value;
	}

	public ArrayList<String> getZetels() {
		return _zetels;
	}
	public void setZetels(ArrayList<String> value) {
		this._zetels = value;
	}

	public int getVrijeZitplaatsen() {
		return _vrijeZitplaatsen;
	}

	public void setVrijeZitplaatsen(int value) {
		this._vrijeZitplaatsen = value;
	}

	public int get_gate() {
		return _gate;
	}

	public void set_gate(int _gate) {
		this._gate = _gate;
	}

	
	public String toString()
	{
	 	return padRight(getVluchtNr().toString(), 15).substring(0, 14) + " " + getAankomstPlaats().getLuchthavenNaam() + ": "  +getVertrekTijdStip() + " - "+ getVertrekPlaats().getLuchthavenNaam() + ": " + getAankomstTijdStip()
	 								  + " Vrije zitplaatsen: " + getVrijeZitplaatsen();
	}
	
	public boolean equals(Vlucht vlucht) {
		return (this._vluchtId == vlucht.getVluchtId());
	}

	public String padRight(String s, int n) {
		return String.format("%1$-" + n + "s", s);
	}
}
